Desde hace tiempo estoy usando la Raspberry Pi como servidor donde alojar pequeños proyectos caseros. De momento, estoy puliendo la instalación de Dokuwiki, en particular la creación de un script de backup fiable.
Para acceder al wiki tengo que usar la URL http://192.168.1.50/dokuwiki, que es muy larga para picarla repetidamente... Y como el software en mi router no me permite añadir entradas DNS sueltas (necesito configurar un servidor DNS, cuya instalación tengo prevista en la RPi en un futuro no muy lejano), he optado por la solución quick and dirty: editar el fichero hosts del Mac (que es desde donde trabajo de manera habitual).
Si el servidor DNS son las páginas amarillas de Internet, traduciendo nombres de servidores en sus correspondientes IPs, el fichero hosts es una especie de agenda personal, que contiene sólo unas cuantas entradas.
Para asociar cada IP con "su nombre", inicialmente se utilizaba un fichero: el fichero hosts. En este fichero se introducían una lista de direcciones IPs y los nombres asociados. Pero a medida que había más y más equipos conectados a la red, se volvió imposible mantener actualizada la lista de equipos usando un fichero. Cada vez que un nuevo equipo se conectaba a la red, el fichero hosts tenía que actualizarse en cada equipo con la nueva entrada...
Así surgió la necesidad de crear un sistema de resolución de nombres distribuido. Puedes leer mucho más al respecto en la página sobre Domain Name System en la Wikipedia.
Pese a que hoy en día todo cacharro viviente utiliza DNS, los sistemas todavía preguntan primero a su fichero hosts local cuando intentan averiguar la IP asociada al nombre de un dominio o de un equipo.
Cuando asociamos un nombre a una IP en el fichero hosts, esta asociación sólo es válida en el equipo donde se encuentra el fichero hosts. No es una solución eficaz para más de un equipo (para eso son los servidores DNS), pero sirve para ahorrarnos escribir una IP que visitamos frecuentemente (como el caso de la RPi).
En Windows, este fichero está en la carpeta c:\windows\system32\drivers\etc\hosts, mientras que en Mac se encuentra en /private/etc/hosts. En ambos casos debes editar el fichero con permisos de administrador o root.
Una vez abierto, introduce la IP del equipo y separada por espacios (o tabulaciones), el nombre con el que queremos asociar a esta IP.
En mi caso:
192.168.1.50 rpi.lan
El cambio será efectivo inmediatamente, por lo que una vez guardado el fichero hosts, ya puedes acceder a tu Raspberry Pi mediante rpi.lan (por ejemplo).
Imagina el siguiente escenario: en una pequeña empresa quieren limitar el acceso a www.facebook.com. Una forma de hacerlo sería introduciendo una IP falsa en el fichero hosts:
0.0.0.0 www.facebook.com
En cualquier equipo donde realicemos esta modificación, cuando el navegador intente averiguar la IP asociada a www.facebook.com, obtendrá una IP incorrecta (0.0.0.0). Al intentar conectarse a esta IP, no se encontrará nada, por lo que la página de Facebook no se cargará.
Este sistema es el que utilizan algunos sistemas de bloqueo de anuncios: introducen entradas erróneas en el fichero hosts para los dominios de empresas que se dedican a servir anuncios web, evitando que el navegador contacte con ellos.
También podríamos especificar una IP de otro sitio, como la intranet de la empresa: al poner www.facebook.com en la barra de direcciones del navegador, ¡la página que se cargaría sería la de la intranet! Sería algo confuso para el usuario, ya que en la barra de navegador aparecería la url de Facebook, pero en general la intranet funcionaría de manera "normal".
Dado que la resolución de nombres tiene preferencia sobre los sistemas DNS, también el malware puede intentar explotar esta ventaja, aunque con fines mucho más perversos. Si un malware tuviera acceso a tu fichero hosts, podría introducir una entrada incorrecta para la dirección web de tu banco, por ejemplo. Así, cuando intentaras acceder a tubanco.com en realidad podrías acabar en sitiomalote.com. Si en este sitio alguien con malas intenciones colocara una página parecida a la de tu banco, es probable que no te dieras cuenta de que no estabas accediendo a la página de tu banco hasta después de haber introducido tu contraseña... Pero entonces el señor malote ¡ya la tendría y podría hacer cosas malas con tu dinero! La conexión a los bancos se realiza mediante https y además, los bancos proporcionan sistemas como tarjetas de coordenadas o validación en dos pasos para evitar problemas de ese tipo, por ejemplo, pero el mismo tipo de ataque sería válido contra cualquier tipo de página web.
Pero del mismo modo puede utilizarse el fichero hosts con fines perversos...
Recuerda:
Para acceder al wiki tengo que usar la URL http://192.168.1.50/dokuwiki, que es muy larga para picarla repetidamente... Y como el software en mi router no me permite añadir entradas DNS sueltas (necesito configurar un servidor DNS, cuya instalación tengo prevista en la RPi en un futuro no muy lejano), he optado por la solución quick and dirty: editar el fichero hosts del Mac (que es desde donde trabajo de manera habitual).
Si el servidor DNS son las páginas amarillas de Internet, traduciendo nombres de servidores en sus correspondientes IPs, el fichero hosts es una especie de agenda personal, que contiene sólo unas cuantas entradas.
Cómo funciona la resolución de nombres
Cada equipo conectado a una red se identifica mediante una dirección IP. Pero los humanos somos muy malos recordando números, así que desde el principio se prefirió asociar un "nombre" a cada una de estas direcciones IPs. Es lo mismo que nos pasa con los números de teléfono, por ejemplo: es mucho más sencillo recordar "Mamá" que un número de nueve cifras.Para asociar cada IP con "su nombre", inicialmente se utilizaba un fichero: el fichero hosts. En este fichero se introducían una lista de direcciones IPs y los nombres asociados. Pero a medida que había más y más equipos conectados a la red, se volvió imposible mantener actualizada la lista de equipos usando un fichero. Cada vez que un nuevo equipo se conectaba a la red, el fichero hosts tenía que actualizarse en cada equipo con la nueva entrada...
Así surgió la necesidad de crear un sistema de resolución de nombres distribuido. Puedes leer mucho más al respecto en la página sobre Domain Name System en la Wikipedia.
Pese a que hoy en día todo cacharro viviente utiliza DNS, los sistemas todavía preguntan primero a su fichero hosts local cuando intentan averiguar la IP asociada al nombre de un dominio o de un equipo.
Cuando asociamos un nombre a una IP en el fichero hosts, esta asociación sólo es válida en el equipo donde se encuentra el fichero hosts. No es una solución eficaz para más de un equipo (para eso son los servidores DNS), pero sirve para ahorrarnos escribir una IP que visitamos frecuentemente (como el caso de la RPi).
En Windows, este fichero está en la carpeta c:\windows\system32\drivers\etc\hosts, mientras que en Mac se encuentra en /private/etc/hosts. En ambos casos debes editar el fichero con permisos de administrador o root.
Una vez abierto, introduce la IP del equipo y separada por espacios (o tabulaciones), el nombre con el que queremos asociar a esta IP.
En mi caso:
192.168.1.50 rpi.lan
El cambio será efectivo inmediatamente, por lo que una vez guardado el fichero hosts, ya puedes acceder a tu Raspberry Pi mediante rpi.lan (por ejemplo).
Otros usos para el fichero hosts
Otro uso para el fichero hosts hoy en día es como herramienta para limitar el acceso de un equipo a determinados sitios de internet.Imagina el siguiente escenario: en una pequeña empresa quieren limitar el acceso a www.facebook.com. Una forma de hacerlo sería introduciendo una IP falsa en el fichero hosts:
0.0.0.0 www.facebook.com
En cualquier equipo donde realicemos esta modificación, cuando el navegador intente averiguar la IP asociada a www.facebook.com, obtendrá una IP incorrecta (0.0.0.0). Al intentar conectarse a esta IP, no se encontrará nada, por lo que la página de Facebook no se cargará.
Este sistema es el que utilizan algunos sistemas de bloqueo de anuncios: introducen entradas erróneas en el fichero hosts para los dominios de empresas que se dedican a servir anuncios web, evitando que el navegador contacte con ellos.
También podríamos especificar una IP de otro sitio, como la intranet de la empresa: al poner www.facebook.com en la barra de direcciones del navegador, ¡la página que se cargaría sería la de la intranet! Sería algo confuso para el usuario, ya que en la barra de navegador aparecería la url de Facebook, pero en general la intranet funcionaría de manera "normal".
Dado que la resolución de nombres tiene preferencia sobre los sistemas DNS, también el malware puede intentar explotar esta ventaja, aunque con fines mucho más perversos. Si un malware tuviera acceso a tu fichero hosts, podría introducir una entrada incorrecta para la dirección web de tu banco, por ejemplo. Así, cuando intentaras acceder a tubanco.com en realidad podrías acabar en sitiomalote.com. Si en este sitio alguien con malas intenciones colocara una página parecida a la de tu banco, es probable que no te dieras cuenta de que no estabas accediendo a la página de tu banco hasta después de haber introducido tu contraseña... Pero entonces el señor malote ¡ya la tendría y podría hacer cosas malas con tu dinero! La conexión a los bancos se realiza mediante https y además, los bancos proporcionan sistemas como tarjetas de coordenadas o validación en dos pasos para evitar problemas de ese tipo, por ejemplo, pero el mismo tipo de ataque sería válido contra cualquier tipo de página web.
Conclusión
Como dicen en la peli de Spiderman, un gran poder conlleva una gran responsabilidad. Modificar el fichero hosts te permite alterar la resolución de nombres del equipo. Puedes usar este poder para hacer el bien y permitir poner un nombre amigable a tus equipos locales sin necesidad de montar un DNS casero. Así podrás acceder a tus con más comodidad.Pero del mismo modo puede utilizarse el fichero hosts con fines perversos...
Recuerda:
- «Pero cuidado con el lado oscuro: Ira, temor, agresión; de la Fuerza del lado oscuro son. Fácil fluyen rápidos a unirse en el combate. Si una vez tomas el sendero del lado oscuro para siempre dominará tu destino. Te consumirá, al igual que lo hizo con el aprendiz de Obi-Wan.»
Comentarios